package me.keiwu.user.service;

import me.keiwu.pub.data.Response;
import me.keiwu.user.domain.CombAvatar;
import me.keiwu.user.domain.Item;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * Created by kei on 25/11/2017.
 * ip形象
 */
public interface ItemService {


    /**
     * 获取上架中的item
     *
     * @param page
     * @param size
     * @return
     */
    Page<Item> getShelveItems(int page, int size);

    /**
     * 获取上架中的item
     * userId 判断是否获取
     *
     * @param userId
     * @param page
     * @param size
     * @return
     */
    Page<Item> getShelveItems(Long userId, int page, int size);

    /**
     * 获取全部套装
     * @param page
     * @param size
     * @return
     */
    Page<Item> getAllSuits(int page, int size);


    /**
     * 获取全部套装
     * @param page
     * @param size
     * @return
     */
    Page<Item> getAllSingles(int page, int size);

    /**
     * 通过兑换的道具数量，计算用户等级
     * @param userId
     * @return
     */
    Integer calcUserLevel(Long userId);


    /**
     * 兑换item
     * @param userId
     * @param itemId
     * @return
     */
    Response exchangeItem(Long userId, Integer itemId);


    /**
     * 添加套装
     * @param name
     * @param imgUrl
     * @param itemDetail
     * @param costGold
     * @param shareGet
     * @param shelve
     * @return
     */
    Item addSuit(String name, String imgUrl, String itemDetail, int costGold,
                 boolean shareGet, boolean shelve);

    /**
     * 更新套装
     * @param itemId
     * @param name
     * @param imgUrl
     * @param itemDetail
     * @param costGold
     * @param shareGet
     * @param shelve
     * @return
     */
    Item updateSuit(Integer itemId, String name, String imgUrl, String itemDetail,
                    int costGold, boolean shareGet, boolean shelve);


    /**
     * 添加单件，同步添加组合形象
     * @param name
     * @param imgUrl
     * @param costGold
     * @param shareGet
     * @param shelve
     * @param combAvatarList
     * @return
     */
    Item addSingle(String name, String imgUrl, int costGold, boolean shareGet, boolean shelve,
                   List<CombAvatar> combAvatarList);

    /**
     * 更新单件，同步更新组合形象
     * @param itemId
     * @param name
     * @param imgUrl
     * @param costGold
     * @param shareGet
     * @param shelve
     * @param combAvatarList
     * @return
     */
    Item updateSingle(Integer itemId, String name, String imgUrl, int costGold, boolean shareGet,
                      boolean shelve, List<CombAvatar> combAvatarList);


    /**
     * 上下架item
     * @param itemId
     * @param shelve
     * @return
     */
    Item shelveItem(Integer itemId, boolean shelve);


    /**
     * 设置组合形象
     * @param userId
     * @param suitId
     * @param singleId
     * @return
     */
    Response setCombAvatar(Long userId, Integer suitId, Integer singleId);


    /**
     * 设置组合形象
     * @param userId
     * @param singleId
     * @return
     */
    Response setCombAvatar(Long userId, Integer singleId);

}
